import request from '../request'

/**
 * 获取出租管理列表
 * @param {Object} params 查询参数
 * @param {string} [params.app_id] - 应用ID
 * @param {string} [params.keyword] - 商品名称，支持like查询
 * @param {string} [params.start_date] - 开始日期：YYYY-MM-DD
 * @param {string} [params.end_date] - 结束日期：YYYY-MM-DD
 * @param {string} [params.leasing_status] - 转租状态：0=待出租(表示在库存中),1=匹配中(表示该设备可以出租),2=出租中,3=退机(已归还设备),4=半路退机(已出租过n个月),5=已完结(转租结束，已获取全部收益)
 * @param {number} [params.page=1] - 页码
 * @param {number} [params.list_rows=15] - 每页条数，默认15条
 * @param {string} [params.token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function getRentalList(params = {}) {
	// 设置默认值
	const defaultParams = {
		page: 1,
		list_rows: 15
	}

	// 合并参数
	const requestParams = {
		...defaultParams,
		...params,
		list_rows: params.pageSize
	}

	return request.get('trusteeship.leasing/list', requestParams)
}

/**
 * 获取出租管理详情
 * @param {number} id - 出租记录ID
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function getRentalDetail(id, token) {
	const params = {
		id
	}
	if (token) {
		params.token = token
	}

	return request.get('trusteeship.leasing/detail', params, {
		custom: {
			loading: false
		}
	})
}

/**
 * 获取我的库存列表
 * GET trusteeship.leasing/inventory
 * @param {Object} params 查询参数
 * @param {string} [params.keyword] - 商品名称，支持like查询
 * @param {string} [params.start_date] - 开始日期：YYYY-MM-DD
 * @param {string} [params.end_date] - 结束日期：YYYY-MM-DD
 * @param {string} [params.leasing_status] - 转租状态：0=待出租(表示在库存中),1=匹配中(表示该设备可以出租),2=出租中,3=退机(已归还设备),4=半路退机(已出租过n个月),5=已完结(转租结束，已获取全部收益)
 * @param {number} [params.page=1] - 页码
 * @param {number} [params.list_rows=15] - 每页条数
 * @param {string} [params.token] - 用户token
 * @returns {Promise<{list: {total:number, per_page:number, current_page:number, last_page:number, data:Array}}>} 返回Promise对象
 */
export function getInventoryList(params = {}) {
	// 设置默认值
	const defaultParams = {
		page: 1,
		list_rows: 15
	}

	// 合并参数
	const requestParams = {
		...defaultParams,
		...params
	}

	return request.get('trusteeship.leasing/inventory', requestParams);
}

/**
 * 转让出租设备
 * @param {string|Array<number>} ids - 出租管理ID，可以是逗号分隔的字符串或数组
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function transferLeasing(ids, token) {
	// 处理数组类型的ids
	const idsParam = Array.isArray(ids) ? ids.join(',') : ids;

	return request.post('trusteeship.leasing/transfer', {
		ids: idsParam
	});
}

/**
 * 再次委托出租设备
 * POST trusteeship.leasing/entrust
 * @param {string|Array<number>} ids - 出租管理ID，可以是逗号分隔的字符串或数组
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function reEntrustLeasing(ids, token) {
	const params = {}

	// 处理ids参数，支持数组或逗号分隔的字符串
	if (Array.isArray(ids)) {
		params.ids = ids.join(',')
	} else {
		params.ids = String(ids)
	}

	if (token) {
		params.token = token
	}

	return request.post('trusteeship.leasing/entrust', params)
}

/**
 * 退机
 * POST trusteeship.leasing/returnDevice
 * @param {string|number} id - 出租管理ID
 * @param {string} [token] - 用户token
 * @returns {Promise} 返回Promise对象
 */
export function returnDevice(id, token) {
	const params = {
		id: String(id)
	};

	if (token) {
		params.token = token;
	}

	return request.post('trusteeship.leasing/returnDevice', params);
}

export default {
	getRentalList,
	getRentalDetail,
	getInventoryList,
	reEntrustLeasing,
	transferLeasing,
	returnDevice
}